آموزش نرم¬افزار MATLAB
تاريخ : یک شنبه 12 آبان 1392برچسب:, | 16:42 | نویسنده : محسن قبادی

کارگاه محاسبه و ترسیم 3

(آموزش نرم­افزار MATLAB)

 

 

 

 

 

 

تهیه و تدوین:

محسن قبادی

 

 

 

سال تحصیلی89-89

ایجاد یک m-file

برای نوشتن برنامه­های کاربردی در نرم­افزار MATLAB  باید این برنامه­ها را در محیط یک فایل بنویسیم که به آن mfile  گفته می­شود. پنجره زیر روش ایجاد یک m-file  را نشان می­دهد.

 

 

با انجام مراحل فوق پنجره­ای مطابق شکل زیر باز می­شود که می­توان فرمولهای ریاضی و همه محاسبات را در آن انجام داد.

مثلا می­خواهیم برنامه­ای بنویسیم که اضلاع یک مثلث را گرفته و محیط و مساحت آن را محاسبه نماید. با ایجاد یک M-file  و نوشتن خطوط زیر این کار امکان­پذیر می­گردد. لازم به ذکر است که دانستن روابط ریاضی محیط و مساحت از روی اضلاع مثلث، ضروری است.

نکته: برای جذر گرفتن از روابط ریاضی می­توان از تابع    sqrt() استفاده نمود.

نکته: نرم­افزار بین حروف کوچک و بزرگ تفاوت قائل می­گردد و توجه شود که شکل یک حرف خاص در کل برنامه ثابت بماند.

نکته: برای چاپ کردن حاصل محاسبات، باید در کنار روابط مورد نظر علامت ; را حذف نمود.

 

نکته: برای پاک کردن پنجره command window می­توان از دستور clc بهره برد.

نکته: برای پاک کردن حافظه نرم­افزار از متغیرها از دستور clear all استفاده می­نماییم.

تذکر: همواره در ابتدای برنامه­ها از دو دستور اشاره شده استفاده گردد.

تمرین: برنامه­ای بنویسید که محیط یک دایره را گرفته و مساحت آن را محاسبه نماید.

نکته: برای توان رساندن یک عدد از دستور ^ استفاده نمایید.

تمرین: برنامه­ای بنویسید که اضلاع یک مثلث را گرفته و زوایای آن را محاسبه نماید.

نکته: توابع مثلثاتی نرم­افزار عبارتند از

Sin, sind, cos, cosd, tan, tand, asin, acos, asind, acosd

تمرین: برنامه­ای بنویسید که زاویه­های داخلی یک پیمایش بسته پنج ضلعی را بر حسب گراد گرفته و خطای بست زاویه­ای را محاسبه نماید. مقدار زوایای سرشکن شده را نیز محاسبه نمایید.

نام زاویه

A

B

C

D

E

مقدار زاویه

120

90

100

120

169.25

 

تمرین: در تمرین فوق اگر ژیزمان امتداد AB ، 20 گراد باشد، مطلوبست ژیزمان سایر امتدادها ( پیمایش مورد نظر ساعتگرد است).

دستور input

از این دستور می­توان برای دریافت داده از کاربر توسط صفحه کلید استفاده نمود. برای مثال، می­خواهیم برنامه تمرین قبل را طوری بنویسیم که بعد از اجرای آن، مقدار زوایا از کاربر خواسته شود.

دستور input را به شکل زیر مورد استفاده قرار می­دهیم:

a = input(' please enter a:');

 

با اجرای دستور فوق مقدار متغیر a از کاربر خواسته می­شود.

تمرین: برنامه تمرین قبل را با استفاده دستور input  برای پیمایش زیر بنویسید و زوایا را تعدیل نمایید.

مقدار زاویه( درجه)

نام زاویه

84.8922

A

96.6236

B

103.6766

C

134.4950

D

120.3055

E

 

تمرین : زوایای خارجی یک پیمایش بسته 6 ضلعی از قرار زیر است. مقدار زوایای تعدیل شده را محاسبه نمایید.

مقدار زاویه ( گراد)

نام زاویه

320.3670

A

234.9020

B

277.4180

C

308.4220

D

253.7290

E

205.1640

F

 

دستورات format نمایش اعداد

Format short: نمایش اعداد تا چهار رقم اعشار

Format long: نمایش اعداد تا شانزده رقم اعشار. البته اگر تعداد رقمهای قبل از اعشار زیاد باشد، عدد مربوطه به شکل توانی از ده نمایش داده می­شود.

Format short e: نمایش اعداد با تعداد ارقام اعشاری کم به شکل توانی از ده.

Format long e: نمایش اعداد با تعداد ارقام اعشاری زیاد به شکل توانی از ده.

معمولا در ابتدای برنامه باید یکی از انواع صحیح موارد فوق را وارد نماییم.

تعریف ماتریس

در بسیاری از موارد در پروژه­های نقشه­برداری لازم است مجموعه­ای از اعداد را با اعمال روابط ریاضی به مجموعه­ای از اعداد دیگر تبدیل نمود. برای مثال، در تمرین قبل مقدار تصحیح زوایا محاسبه شده و در 6 خط برنامه این تصحیح به تک تک زاویه­ها اعمال می­گشت. به جای انجام این کار می­توان با تعریف یک ماتریس که همه زوایای قرائت شده در درون آن قرار می­گیرند، مقدار تصحیح را در یک خط به ماتریس زوایا اعمال نموده و سرعت اجرای برنامه را افزایش داده و حجم برنامه را کاهش دهیم.

برای تعریف ماتریس در این نرم­افزار از روش زیر استفاده نمایید:

 

انجام عملیات­های ماتریسی

همواره لازم است که چهار عمل اصلی و سایر عملیات­های ریاضی بر روی ماتریسها انجام گردد. بدین منظور ماتریس­های زیر را در نظر بگیرید.

 

ضرب و تقسیم ماتریس­ها

بطور کل اگر بخواهیم دو ماتریس را در یکدیگر ضرب ماتریسی نماییم باید تعداد ستونهای ماتریس اول با تعداد سطرهای ماتریس دوم یکی باشد.

 

اما در بسیاری از مسائل نقشه­برداری لازم نیست که دو ماتریس در یکدیگر ضرب ماتریسی شوند بلکه ضرب یا تقسیم درایه­ای مورد توجه نقشه­بردارها می­باشد. به عبارت دیگر لازم است که درایه­های ماتریس اول نظیر به نظیر در درایه­های ماتریس دوم ضرب یا تقسیم گردند که در این حالت باید علامت . را در کنار علامتهای مورد نظر قرار داد. (*. یا /. یا ^.)

 

البته توابع سینوس و کسینوس و ... را نیز می­توان بر ماتریسها اعمال نمود.

تمرین: جدول زیر نشان دهنده طول اضلاع 10 مثلث می­باشد. مطلوبست موارد زیر

الف) محیط

ب) مساحت

ج) زوایای هر یک از مثلث­ها

 

ضلع سوم

ضلع دوم

ضلع اول

شماره مثلث

10

10

12

1

13

13

10

2

15

15

8

3

12

12

5

4

14

14

6

5

6

6

9

6

15

15

12

7

12

12

10

8

10

10

17

9

18

18

20

10

نکته: برای جلوگیری از ایجاد پرانتزهای ناصحیح، در هنگام تایپ فرمولها می­توان ابتدا همه پرانتزها را از بیرونی­ترین آن نوشت و سپس متغیرها را در آن تایپ نمود.

آشنایی با خطاهای رایج برنامه نویسی

Undefined function or variable 'd’: یعنی متغیر ‘d’ در برنامه تعریف نشده است ولی در فرمول نوشته شده است.

Unbalanced or unexpected parenthesis or bracket.: یعنی تعداد پرانتزها یا براکتها صحیح نیست.

تمرین: مطابق جدول زیر یک ترازیابی بسته از نقطه A شروع شده و به این نقطه رسیده است. اگر ارتفاع نقطه A ، 1650 متر باشد، ارتفاع تصحیح شده سایر نقاط را به دست آورید. ( برای جمع زدن درایه های یک ماتریس از تابع sum() استفاده نمایید.)

F.S.

B.S.

نام نقطه

 

2697

A

1574

3176

B

2968

2945

C

3742

0732

D

2592

1840

E

1757

3290

F

2868

2063

G

1377

1159

H

1040

 

A

تمرین: با توجه به داده­های زیر، خطای بست زاویه­ای و ضلعی پیمایش را محاسبه نمایید.

AB = 53.68 , BC = 248.35 , CD = 129.17 , DA = 169.5

A = 62  51  30  ,   B = 124  35  20 ,  C = 30  51  30   ,  D =  141  42  40

D

XA = 1000  , YA = 1000,

C

GAB = 20

 

A

B

                                                                   

 

بعضی از توابع  مفید

length : بیشترین تعداد سطر یا ستون یک ماتریس

size: تعداد سطرها و ستونها

min , max : بزرگترین و کوچکترین عضو یک ماتریس

mean : میانگین داده های یک ماتریس

var : واریانس داده های یک ماتریس

std: انحراف معیار داده­های یک ماتریس

 cov : کووریانس داده­های یک ماتریس

sort : مرتب سازی داده های یک ماتریس

ترانهاده (‘) : برای تغییر محل سطرها و ستونها

sum : مجموع اعداد ستونها

abs : قدر مطلق یک عدد.

 

اعداد ثابت در نرم افزار

eps : کوچکترین عدد موجود در نرم­افزار

pi : عدد 3.14

 

دستورات شرطی

در بسیاری از مسائل نقشه­برداری لازم است که در حین محاسبات یک شرطی را بررسی نماییم. به مثالهای زیر توجه نمایید:

1-      در محاسبه ژیزمان معکوس لازم است ژیزمان مستقیم با عدد 180 درجه مقایسه گردد و در صورت بزرگتر بودن و یا کوچکتر بودن آن از عدد 180 درجه  به ترتیب باید از ژیزمان مستقیم، عدد 180 را کم کرد و یا به آن اضافه نمود.

2-     در نقشه برداری زاویه منفی معنا ندارد و اگر یک زاویه منفی شد با فرض صحیح بودن محاسبات، باید عدد 360 را به آن زاویه اضافه نمود.

3-     در نقشه برداری ژیزمان بزرگتر 360 درجه معنا ندارد و در این  صورت باید عدد 360 را از ژیزمان کم نماییم.

4-     در محاسبه ژیزمان از روی مختصات نقاط، لازم است که شرط ربع آن امتداد بررسی شود و زاویه حامل را به ژیزمان تبدیل نماییم.

در هر یک از حالات فوق می­توان از دستورات شرطی نرم­افزار استفاده نمود که عبارتند از:

if , else , elseif, while, switch, end , break , return

 

دستور شرطی if

از این دستور به شکل زیر استفاده می­گردد:

if shart 1

    dastoorat 1

else

    dastoorat 2

end

مطابق خطوط بالا اگر shart 1 برقرار باشد، dastoorat 1اجرا می­شود و برنامه به بعد از end می­رود ولی اگر shart 1 برقرار نباشد،  dastoorat 2 اجرا خواهد شد. به مثال زیر توجه نمایید:

 

a = input('please enter a : ');

b = input('please enter b : ');

c = input('please enter c : ');

 

if (a>b)

    d = c*2;

else

    d = c/2

end

 

در مثال فوق ابتدا سه عدد a , b , c از کاربر برنامه خواسته می­شود. سپس متغیر a  با متغیر b مقایسه می­گردد و در صورت بزرگتر بودن a از b خط d = c*2 اجرا می­گردد، در غیر اینصورت خط d = c/2 اجرا خواهد شد.

توجه گردد که بعد از پایان دستورات حتما از عبارت end استفاده گردد.

 

دستور شرطی elseif

این دستور همانند دستور if می­باشد ولی در حالتی که چند شرط را بخواهیم در برنامه تست نماییم، از این دستور به صورت زیر استفاده می­نماییم:

if (a>b)

    d = c*2;

elseif (a==b)

    d = c/2

elseif (b>a)

    d = c^2

end

 

نکته: معمولا در حالت­های شرطی دو عدد با یکدیگر مقایسه می­گردند که از نمادهای زیر برای مقایسه می­توان استفاده نمود:

a>b: a  بزرگتر از b  باشد.

a

a==b: a  مساوی با b  باشد.

a>=b: a  بزرگتر یا مساوی با b  باشد.

a<=b: a  کوچکتر یا مساوی با b  باشد.

a~=b: a  مخالف b  باشد.

نکته: در بعضی مواقع لازم است که بطور همزمان دو شرط مقایسه­ای مورد توجه قرار گیرند که در این حالت از علامت & و | به معنای " و"  و  "یا"  می­توان استفاده نمود.

if (a>b&a>c)

    d = c*2;

elseif (a>b|a>c)

    d = c/2

elseif (b>a)

    d = c^2

end

 

در دستورات فوق برای اینکه برنامه خط d = c*2 را اجرا نماید،لازم است که بطور همزمان a از b و a از c بزرگتر باشد (a>b&a>c).   اما اگر a از b بزرگتر باشد یا اگر a از c بزرگتر باشد، d = c/2 را اجرا می­نماید. 

 

مثال: برنامه­ای بنویسید که مختصات دو نقطه را از کاربر گرفته و ژیزمان امتداد مورد نظر را محاسبه نماید.

 

 

حلقه تکرار for

  برای تکرار یک سری دستورات به دفعات معین، از دستور for به شکل زیر می­توان بهره برد:

for i=1:n

    dastoorat

end

مطابق خطوط بالا­­، عبارتهای مربوط به dastoorat به تعداد n دفعه تکرار می­گردد.  

مثال: برنامه­ای بنویسید که مختصات 5 جفت نقطه را گرفته و ژیزمان امتداد­های مورد نظر را محاسبه نماید.

نقطه نشانه روی

نقطه استقرار

1200

1200

1000

1000

1500

1000

1300

1500

1200

1500

1360

1250

4000

2000

3700

2560

1200

1000

1500

1000

 

D

B

مثال: مطابق جدول زیر مختصات سومه­های یک مسیر از قرار زیر است. زاویه انحراف هریک از قوس­ها را محاسبه نمایید.

A

E

C

 

 

                                                                                                            

y

x

 

2200

1520

A

3400

2300

B

2500

3300

C

3500

4000

D

3300

5100

E

 


نظرات شما عزیزان:

ناصر
ساعت0:03---18 آذر 1395
سلام دوستان...میشه ی نمونه پیمایش ب روش کمترین مربعات رو توmatlab بفرستین...پیمایش بسته...ممنون میشم

آرمین
ساعت14:13---25 آذر 1394
سلام خسته نباشید.ببخشید یه برنامه میخواستم واسه سرشکنی خطاها در پیمایش.اگه امکانش براتون وجود داره مرسی.برنامه مطلب
پاسخ:سلام خسته نباشی دوست عزیز برنامه مطلب برای سرشکنی بهترین برنامس


آرمین
ساعت14:11---25 آذر 1394
سلام خسته نباشید.ببخشید یه برنامه میخواستم واسه سرشکنی خطاها در پیمایش.اگه امکانش براتون وجود داره مرسی.برنامه مطلب

همايون
ساعت21:05---4 دی 1393
خيلي ممنون
پاسخ:ممنون که بهمون سر زدین امیدوارم بتونم پاسخ های شمارو جواب دهم . و از دانسته های شما استفاده کنم


sm
ساعت14:19---5 آذر 1393

نمونه ای از یک برنامه که زوایای پیمایش بشته را سرشکن می کند چطور می تونم پیدا کنم؟
پاسخ: در یک فایل اکسب براتون تو وبلاگ قرار دارم.

دانلود



یکتا
ساعت20:02---14 ارديبهشت 1393
خیلی خوب بود به شرطی که مثال ها بیشتر باشنپاسخ:چشم حتما ممنونم که سر میزنین و از حمایت میکنین

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:







  • دانلود کتاب
  • بک لینک